package com.zjj.learn.designmodel.work.bridge;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public abstract class OperateSystem {

    private String name;

    /**
     * 若要实现一个操作系统可以同时执行多个文件解析器，实例直接使用 List<FileParser> 就行了，
     * 然后再具体的子类 的 parseFile() 方法里面一次便利所有父类的 fileParser 就可以了
     **/
//    private FileParser fileParser;

    private List<FileParser> fileParsers = new ArrayList<>();

    public abstract void parseFile();

    public OperateSystem() {
    }

//    public OperateSystem(FileParser fileParser ) {
//        this.fileParser = fileParser;
//    }

    public OperateSystem(FileParser ...parsers ) {
        if (parsers.length != 0) {
            this.fileParsers.addAll(Arrays.asList(parsers));
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    //每次只能传递一个文件解析器
//    public FileParser getFileParser() {
//        return fileParser;
//    }
//
//    public void setFileParser(FileParser fileParser) {
//        this.fileParser = fileParser;
//    }



    //每次可以传递多个文件解析器
    public List<FileParser> getFileParsers() {
        return fileParsers;
    }

    public void setFileParsers(List<FileParser> fileParsers) {
        this.fileParsers = fileParsers;
    }
}
